home *** CD-ROM | disk | FTP | other *** search
/ ASME's Mechanical Engine…ing Toolkit 1997 December / ASME's Mechanical Engineering Toolkit 1997 December.iso / c_lang / varinc.lzh / PAGE78.C < prev    next >
C/C++ Source or Header  |  1979-11-30  |  2KB  |  40 lines

  1. /* TO COMPILE FOR DEBUG:  MSC LINELEN.C /DDEBUG /DDBGMAIN; */
  2. /*****************************************************************************/
  3. /* linelen() is the line-length function. It returns the number of           */
  4. /* characters before '\n' in the line, or -1 if '\0' is found before '\n'.   */
  5. /*****************************************************************************/
  6.  
  7. int linelen(line)   
  8. char line[];                                   /* the string to be processed */
  9.  
  10.    {
  11.    short len;
  12.  
  13.    for (len = 0; line[len] != '\0' && line[len] != '\n'; ++len)
  14.  
  15. #if defined(DEBUG)
  16.       printf("\nDEBUG: line[%d] = %c (hex: %x)\n",
  17.          len, line[len], line[len]);                         /* DEBUG output */
  18. #else
  19.       ;                                        /* no DEBUG; a null loop body */
  20. #endif
  21.    return (line[len] == '\n' ? len : -1);  /* Returns -1 if '\0' before '\n'.*/
  22.    }
  23.  
  24. #if defined(DBGMAIN)
  25.    #define TESTFOR(cond, msg) if (!(cond)) \
  26.    printf("\7\n***TEST FAILED: %s\n", (msg))
  27.    
  28.    /**************************************************************************/
  29.    /* Test driver to test the linelen() function.                            */
  30.    /**************************************************************************/
  31.  
  32.    main()
  33.       {
  34.       TESTFOR(linelen("12\n") == 2, "linelen #1");
  35.       TESTFOR(linelen("\n") == 0, "linelen #2"); 
  36.       TESTFOR(linelen("") == -1, "linelen #3");
  37.       printf("linelen tests complete\n");
  38.       }
  39. #endif
  40.